package cideplus.ui.export.action; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Map; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; public class ExporterWriter { public void writeFilesToDir(File dir, Map<String, byte[]> exportedFiles, IProgressMonitor monitor) throws IOException { Set<String> keySet = exportedFiles.keySet(); for (String fullFileName : keySet) { byte[] bytesToWrite = exportedFiles.get(fullFileName); monitor.setTaskName("Writing... " + fullFileName); monitor.worked(1); if (bytesToWrite.length == 0) { continue; } File fileDir = new File(dir, getDir(fullFileName)); if (!fileDir.exists()) { fileDir.mkdirs(); } File file = new File(fileDir, getFile(fullFileName)); BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(file)); try { out.write(bytesToWrite); out.flush(); } finally { out.close(); } } } private String getFile(String fullFileName) { return fullFileName.substring(fullFileName.lastIndexOf('/') + 1); } private String getDir(String fullFileName) { return fullFileName.substring(0, fullFileName.lastIndexOf('/')); } }